entry: Set a clip
authorMatthias Clasen <mclasen@redhat.com>
Wed, 6 Sep 2017 03:29:59 +0000 (23:29 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 6 Sep 2017 03:29:59 +0000 (23:29 -0400)
Now that GtkEntry is using a text node, we were spilling
the contents out to the side when the entry is scrolling.
Avoid that by setting a clip.

gtk/gtkentry.c

index e5237c7ab353af68e2f899598ff68d71ce93d77f..e2f22dc281b7bc8f3b55ab77576ca9d9419c7de4 100644 (file)
@@ -3280,10 +3280,17 @@ gtk_entry_snapshot (GtkWidget   *widget,
   GtkEntry *entry = GTK_ENTRY (widget);
   GtkEntryPrivate *priv = gtk_entry_get_instance_private (entry);
   int width, height;
+  graphene_rect_t bounds;
   int i;
 
   gtk_widget_get_content_size (widget, &width, &height);
 
+  graphene_rect_init (&bounds,
+                      0, 0,
+                      width, height);
+
+  gtk_snapshot_push_clip (snapshot, &bounds, "Entry Clip");
+
   /* Draw progress */
   if (priv->progress_widget && gtk_widget_get_visible (priv->progress_widget))
     gtk_widget_snapshot_child (widget, priv->progress_widget, snapshot);
@@ -3311,6 +3318,8 @@ gtk_entry_snapshot (GtkWidget   *widget,
     }
 
   gtk_entry_draw_undershoot (entry, snapshot);
+
+  gtk_snapshot_pop (snapshot);
 }
 
 static void